package com.csap.framework.apidoc.config;

import com.csap.framework.apidoc.properties.CsapDocConfig;
import com.csap.framework.util.Assert;
import com.csap.framework.util.ClazzUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.NestedConfigurationProperty;

import java.util.Set;

/**
 * @author yangchengfu
 * @description 扫描包
 * @dataTime 2020年-01月-02日 16:22:00
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ScannerPackageConfig {
    /**
     * 文档配置
     */
    @NestedConfigurationProperty
    private CsapDocConfig config;
    /**
     * api 扫描到的类
     */
    private Set<Class<?>> apiClasseList;
    /**
     * 枚举扫描到的类
     */
    private Set<Class<?>> enumClasseList;


    public CsapDocConfig getConfig() {
        return config;
    }

    public ScannerPackageConfig(CsapDocConfig csapDocConfig) {
        Assert.notNull(csapDocConfig, CsapDocConfig.class.getName() + "is not null");
        this.config = csapDocConfig;
        apiClasseList = ClazzUtils.getClass(config.getApiPackages(), config.getShowChildPackageFlag());
        enumClasseList = ClazzUtils.getClass(config.getEnumPackages(), config.getShowChildPackageFlag());
    }

    public Set<Class<?>> getApiClasseList() {
        return apiClasseList;
    }

    public Set<Class<?>> getEnumClasseList() {
        return enumClasseList;
    }
}
